from django.http import HttpResponse

from apps.ticket.models import user, wordorder
from service.format_response import api_response
import json
import time, hashlib


def index(request):
    """
    总览
    :param request:
    :return:
    """
    return HttpResponse(
        "This is loonflow's api server, please view frontend page, reference: http://loonflow.readthedocs.io/")


def selectuser(request):
    username = request.GET.get('username', '')  # 获取用户名
    mima = request.GET.get('password', '')  # 获取密码
    password = time_method(mima)  # 加密密码
    userone = user.objects.filter(username=username, password=password)  # 当用户名和密码相同时获取这个字段的数据
    userlist = []
    for i in userone:
        # 把数据遍历进一个数组中
        json_dict = {}
        json_dict["id"] = i.id
        json_dict["role"] = i.role
        json_dict["username"] = i.username
        json_dict["password"] = i.password
        json_dict["phone"] = i.phone
        json_dict["isstate"] = i.isstate
        userlist.append(json_dict)
    if len(userlist) == 1:
        # 判断是否有这个数据，或者说数据的长度为一则有，则返回数据给前端
        return api_response(1, '登入成功', userlist)
    else:
        # 没有则返回-1  和空值
        return api_response(-1, '登入失败', {})


def addleave(request):
    workordercontent = request.GET.get('workordercontent', '')  # 获取前端的数据内容
    workorder1 = request.GET.get('workorder', '')  # 获取前端的数据内容
    isstate = request.GET.get('isstate', '')  # 获取前端的数据内容
    endtime = request.GET.get('endtime', '')  # 获取前端的数据内容
    approver = request.GET.get('approver', '')  # 获取前端的数据内容
    try:
        # try一个函数，创建一个请假 的数据信息
        wordorder.objects.create(workorder=workorder1, isstate=isstate, endtime=endtime,
                                 workordercontent=workordercontent,
                                 approver=approver)
    except:
        # 如果创建失败则返回这里
        return api_response(-1, '申请失败', {})
    else:
        # 如果创建成功则返回这里
        return api_response(1, '申请成功', {})


def updateword(request):
    id = request.GET.get('id', '')  # 获取id工单
    isstate = request.GET.get('isstate', '')  # 获取前端的数据内容
    approver = request.GET.get('approver', '')  # 获取前端的数据内容
    # 获取前端传输过来的数据
    try:
        # 根据数据库的数据表进行判断当id=id时对这条字段进行修改，修改他的请假状态
        wordorder.objects.filter(id=id).update(isstate=isstate, approver=approver)
    except:
        return api_response(-1, '申请失败', {})
    else:
        return api_response(1, '申请成功', {})


# md5加密一下密码
def time_method(m):
    m = hashlib.md5()
    m.update(bytes(str(time.time()), encoding='utf-8'))
    return m.hexdigest()


def adduser(request):
    role = request.GET.get('role', '')  # 获取前端的数据内容
    username = request.GET.get('username', '')  # 获取前端的数据内容
    mima = request.GET.get('password', '')  # 获取前端的数据内容
    phone = request.GET.get('phone', '')  # 获取前端的数据内容
    isstate = request.GET.get('isstate', '')  # 获取前端的数据内容
    password = time_method(mima)  # 获取前端的数据内容
    try:
        # try一个函数，创建一个学生或者老师的数据信息
        user.objects.create(role=role, username=username, phone=phone,
                            isstate=isstate, password=password)
    except:
        # 如果创建失败则返回这里
        return api_response(-1, '创建失败', {})
    else:
        # 如果创建成功则返回这里
        return api_response(1, '创建成功', {})
